package qinggui.mlz.module.tag.mapper;

import org.apache.ibatis.annotations.*;
import qinggui.mlz.module.tag.entity.Tag;

import java.util.List;

/**
 * <p>
 * 标签表 Mapper 接口
 * </p>
 *
 * @author qinggui
 * @since 2025-08-10
 */
@Mapper
public interface TagMapper {

    /**
     * 获取所有标签
     *
     * @return List<Tag>
     */
    @Select("select * from tag where is_deleted = 0")
    List<Tag> getAllList();

    /**
     * 根据id获取标签
     *
     * @param id 标签id
     * @return Tag
     */
    @Select("select * from tag where id = #{id} and is_deleted = 0")
    Tag getById(@Param("id") Long id);

    /**
     * 更新标签
     *
     * @param tag 标签
     * @return Integer
     */
    @Update("update tag set name = #{tag.name}, update_time = #{tag.updateTime} where id = #{tag.id}")
    Integer updateTag(@Param("tag") Tag tag);

    /**
     * 创建标签
     *
     * @param tag 标签
     * @return Integer
     */
    @Insert("insert into tag(name, create_time, update_time,is_deleted) values(#{tag.name}, #{tag.createTime}, #{tag.updateTime},0)")
    @Options(useGeneratedKeys = true, keyProperty = "tag.id", keyColumn = "id")
    Integer createTag(@Param("tag") Tag tag);

    /**
     * 删除标签
     *
     * @param id 标签id
     * @return Integer
     */
    @Update("update tag set is_deleted = 1 where id = #{id}")
    Integer deleteTag(@Param("id") Long id);


    /**
     * 根据标签名获取标签
     * @param tagName 标签名
     * @return  Tag
     */
    @Select("select * from tag where name = #{tagName} and is_deleted = 0")
    Tag getOneByName(@Param("tagName") String tagName);
}
